package com.atcumt.meituan;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/* 
 * 小美有n个魔法石，每个魔法石有正反两个数字，一开始全部正面朝上，魔法石要激活需要有一半以上的魔法石数字相同，把魔法石激活的最小翻牌次数
 * 每个魔法石有两面，分为正面和反面，正面有一个数字，反面有一个数字，一开始魔法石全部正面朝上。魔法石要激活，要魔法石中有相同数字的魔法石数量超过一半才可以。
 * 然后你可以对魔法石进行翻面，问最少翻多少次能激活魔法石。
 */
public class Q3 {

    // 计每个牌出现的数量，然后去遍历能出现一半以上的数量，扣掉正面牌上这个数的数量，就是需要翻牌的数量。找最小
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] up = new int[n];
        int[] down = new int[n];
        for (int i = 0; i < n; i++) {
            up[i] = scanner.nextInt();
        }
        for (int i = 0; i < n; i++) {
            down[i] = scanner.nextInt();
        }

        Map<Integer, Integer> map = new HashMap<>();
        Map<Integer, Integer> repeatedMap = new HashMap<>(); // 正反面相同
        for (int i = 0; i < n; i++) {
            map.put(up[i], map.getOrDefault(up[i], 0) + 1);
            if (up[i] != down[i]) {
                map.put(down[i], map.getOrDefault(down[i], 0) + 1);
            }
            repeatedMap.put(up[i], repeatedMap.getOrDefault(up[i], 0) + 1);
        }
        int target = n % 2 == 0 ? n / 2 : (n / 2) + 1;
        int res = n + 1;
        for (Integer key : map.keySet()) {
            if (map.get(key) >= target) {
                if (repeatedMap.get(key) >= target) {
                    System.out.println(0);
                } else {
                    res = Math.min(res, target - repeatedMap.get(key));
                }
            }
        }
        if (res == n + 1) {
            System.out.println(-1);
        } else {
            System.out.println(res);
        }
        scanner.close();
    }
}
